// src/utils/constants.js

// --- 基础选项数组 (用于表单下拉框等UI组件) ---

export const genderOptions = [
  { label: '男', value: '男' },
  { label: '女', value: '女' },
];

export const levelOptions = [
  { label: '省级', value: '省级' },
  { label: '厅局级', value: '厅局级' },
  { label: '县处级', value: '县处级' },
  { label: '乡科级', value: '乡科级' },
];

export const cadreTypeOptions = [
  { label: '厅局级干部', value: '厅局级干部' },
  { label: '中管干部', value: '中管干部' },
];

export const educationOptions = [
  { label: '博士研究生', value: '博士研究生' },
  { label: '硕士研究生', value: '硕士研究生' },
  { label: '本科', value: '本科' },
  { label: '大专', value: '大专' },
  { label: '其他', value: '其他' },
];

export const degreeOptions = [
  { label: '博士', value: '博士' },
  { label: '硕士', value: '硕士' },
  { label: '学士', value: '学士' },
  { label: '无', value: '无' },
];

export const teachingDirectionOptions = [
  { label: '导论', value: '导论' },
  { label: '新时代坚持和发展中国特色社会主义', value: '新时代坚持和发展中国特色社会主义' },
  { label: '以中国式现代化全面推进中华民族伟大复兴', value: '以中国式现代化全面推进中华民族伟大复兴' },
  { label: '坚持党的全面领导', value: '坚持党的全面领导' },
  { label: '坚持以人民为中心', value: '坚持以人民为中心' },
  { label: '全面深化改革开放', value: '全面深化改革开放' },
  { label: '推动高质量发展', value: '推动高质量发展' },
  { label: '社会主义现代化建设的教育、科技、人才战略', value: '社会主义现代化建设的教育、科技、人才战略' },
  { label: '发展全过程人民民主', value: '发展全过程人民民主' },
  { label: '全面依法治国', value: '全面依法治国' },
  { label: '建设社会主义文化强国', value: '建设社会主义文化强国' },
  { label: '以保障和改善民生为重点加强社会建设', value: '以保障和改善民生为重点加强社会建设' },
  { label: '建设社会主义生态文明', value: '建设社会主义生态文明' },
  { label: '维护和塑造国家安全', value: '维护和塑造国家安全' },
  { label: '建设巩固国防和强大人民军队', value: '建设巩固国防和强大人民军队' },
  { label: '坚持"一国两制"和推进祖国完全统一', value: '坚持"一国两制"和推进祖国完全统一' },
  { label: '中国特色大国外交和推动构建人类命运共同体', value: '中国特色大国外交和推动构建人类命运共同体' },
  { label: '全面从严治党', value: '全面从严治党' },
];

// 单位管理相关选项
export const unitTypeOptions = [
  { label: '国家机关', value: '国家机关' },
  { label: '事业单位', value: '事业单位' },
  { label: '国有企业', value: '国有企业' },
  { label: '社会团体', value: '社会团体' },
  { label: '其他', value: '其他' },
];

export const unitLevelOptions = [
  { label: '正部级', value: '正部级' },
  { label: '副部级', value: '副部级' },
  { label: '正局级', value: '正局级' },
  { label: '副局级', value: '副局级' },
  { label: '正处级', value: '正处级' },
  { label: '其他', value: '其他' },
];

// 高校管理相关选项
export const booleanStatusOptions = [
  { label: '是', value: true },
  { label: '否', value: false }
];

export const governingDepartmentOptions = [
  { label: '教育部', value: '教育部' },
  { label: '工信部', value: '工信部' },
  { label: '省教育厅', value: '省教育厅' },
  { label: '其他', value: '其他' }
];

export const locationOptions = [
  { label: '北京', value: '北京' },
  { label: '上海', value: '上海' },
  { label: '广东', value: '广东' },
  { label: '江苏', value: '江苏' },
  { label: '其他', value: '其他' }
];

export const universityOptions = [ // 示例数据，请替换为完整的大学列表
  { label: '北京大学', value: 'Peking University' },
  { label: '清华大学', value: 'Tsinghua University' },
  { label: '复旦大学', value: 'Fudan University' },
  // ...更多大学
];

export const cadreStatusOptions = [
  { label: '在职', value: 'active' },
  { label: '退休', value: 'retired' },
  { label: '离职', value: 'resigned' },
  { label: '其他', value: 'other' },
];

// 表格列配置
export const cadreTableColumns = [
  { title: '姓名', key: 'name', width: 100 },
  { title: '性别', key: 'gender', width: 80 },
  { title: '出生年月', key: 'birthDate', width: 120 },
  { title: '级别', key: 'level', width: 100 },
  { title: '职务', key: 'position', width: 120 },
  { title: '单位归属', key: 'unitName', width: 150 },
  { title: '干部类型', key: 'cadreType', width: 120 },
  { title: '最高学历', key: 'highestEducation', width: 100 },
  { title: '最高学位', key: 'highestDegree', width: 100 },
  { title: '操作', key: 'actions', width: 200, fixed: 'right' },
];

// 分页配置
export const defaultPagination = {
  page: 1,
  pageSize: 10,
  showSizePicker: true,
  pageSizes: [10, 20, 30, 40],
};

// API 基础路径
export const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';

// 文件上传配置
export const uploadConfig = {
  maxSize: 5 * 1024 * 1024, // 5MB
  accept: '.jpg,.jpeg,.png,.pdf,.doc,.docx',
  maxCount: 1,
};

// 导出文件配置
export const exportConfig = {
  fileName: 'cadres',
  fileType: 'xlsx',
  sheetName: '干部信息',
};

// --- 派生出的映射对象 (用于表格单元格等地方进行快速文本转换) ---

/**
 * 一个辅助函数，用于从选项数组创建值到标签的映射对象。
 * 例如: 将 [{ label: '男', value: 'male' }] 转换为 { male: '男' }
 * @param {Array<Object>} options - 具有 label 和 value 属性的选项数组
 * @returns {Object} - 值-标签的映射对象
 */
function createMapFromOptions(options) {
  return Object.fromEntries(options.map(opt => [opt.value, opt.label]));
}

export const genderMap = createMapFromOptions(genderOptions);
export const levelMap = createMapFromOptions(levelOptions);
export const cadreTypeMap = createMapFromOptions(cadreTypeOptions);
export const educationMap = createMapFromOptions(educationOptions);
export const degreeMap = createMapFromOptions(degreeOptions);
export const teachingDirectionDisplayMap = createMapFromOptions(teachingDirectionOptions);
export const statusDisplayMap = createMapFromOptions(cadreStatusOptions);